// +build !windows

// 该文件只会在非windows系统下被编译
package util

import (
	"gitee.com/gopher2011/gva/server/dao"
	"github.com/lestrrat-go/file-rotatelogs"
	"go.uber.org/zap/zapcore"
	"os"
	"path"
	"time"
)

// zap logger中加入file-rotatelogs ==>切割zap的日志文件
// https://blog.csdn.net/weixin_43881017/article/details/111269642
func GetWriteSyncer() (zapcore.WriteSyncer, error) {
	fileWriter, err := rotatelogs.New(
		// 保留7天内的日志,每24小时(整点)分割一次日志
		path.Join(dao.Cfg.Zap.Director, "%Y-%m-%d.log"), //日志文件名,例如:2021-05-04.log , 2021-05-09.log
		rotatelogs.WithLinkName(dao.Cfg.Zap.LinkName),   //创建一个新选项，用于设置链接到当前使用的文件名的符号链接名。
		rotatelogs.WithMaxAge(7*24*time.Hour),
		rotatelogs.WithRotationTime(24*time.Hour),
	)
	if dao.Cfg.Zap.LogInConsole { //日志输出到控制台,日志输出到指定文件
		return zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(fileWriter)), err
	}
	// 日志输出到文件
	return zapcore.AddSync(fileWriter), err
}
